\section{Grundlagen und Werkzeuge}

Die Berechnung und Ber\"ucksichtigung aller real auftretenden Faktoren ist zwar ein gew\"unschtes Ziel einer Bestrahlungssimulation, jedoch sehr aufwendig. Ebenso pr\"asentiert sich mit \geant{} eine Software, die eine kaum \"uberschaubare M\"oglichkeit an Funktionalit\"at zur Simulation von Teilchen-Materie-Interaktion bietet. In einer wie der vorliegenden Projektarbeit lässt sich dies nicht alles ber\"ucksichtigen.
Daher ist es notwendig, den Umfang der Simulation auf die nötigen Parameter sinnvoll einzuschränken und damit die Komplexität zu reduzieren.
Im Folgenden soll sowohl über die verwendete Physik, als auch über gemachte Annahmen Aufschluss gegeben werden.
In Tabelle \ref{tab:params} sind erlaubte Dosierung bei einer Strahlenbehandlung und in Tabelle \ref{tab:geometrie} die simulierten Kopfbestandteile aufgelistet. Um die Gr\"o\ss{}enordnungen der genannten Strahlenbelastung einordnen zu k\"onnen sei gesagt, dass die nat\"urliche Belastung auf einen in Deutschland lebenden Menschen bei j\"ahrlich 2\,mSv - 5\,mSv liegt. Die unterschiedliche Kennzeichnung mit Sievert (Sv) und Gray (Gy) liegt darin begründet, dass die Einheit Sievert ein Dosisäquivalent angibt, dass der Energiedosis in Gray multipliziert mit einem Qualitätsfaktor entspricht, der die biologische Wirksamkeit der jeweiligen Strahlung mit einbezieht. Für $\gamma$- und Röntgen-Strahlung liegt dieser Faktor allerdings bei 1.

\begin{table}[h]
\centering
\begin{tabular}{l|l}
Element & Wert \\ \hline  \hline
Gesamte Strahlungsdosis & 50 Gy \\ \hline
Auge/R\"uckenmark & $ < 7$\,Gy bzw. $ < 5$\,Gy \\ \hline
Tumor & mit min. 95\% der Strahlungsenergie \\ \hline
Abstand Kollimator zu Kopf & 1\,Meter \\ \hline
Fraktionierung & 1,7 - 2,5\,Gy/Tag \\ \hline
Hotspot & 112\% max.
\end{tabular}
\caption[Eine \"Ubersicht \"uber die erlaubten bzw. geforderten Dosen.]{Eine \"Ubersicht \"uber die erlaubten bzw. geforderten Dosen. Die Fraktionierung (die Aufteilung der Behandlung auf mehrere Tage) wird in der Simulation nicht behandelt, da die Genesung von Gewebe nicht simuliert wird.}
\label{tab:params}
\end{table}

\subsection{Targetgeometrie}

Damit die Simulation nicht zu realit\"atsfern wird, wollen wir einen Kopf modellieren, der ann\"ahernd der Anatomie eines Menschen entspricht. Das schlie\ss{}t ein, dass er neben Augen auch R\"uckenmarkgewebe beinhaltet, sowie nicht einfach durch eine Kugel dargestellt wird. Der Kopf ist in Abbildung \ref{fig:kopf}  dargestellt - das Programm\"aquivalent in Abb. \ref{fig:kopfGeant4}. Beide enthalten die Geometrie, welche in Tabelle \ref{tab:geometrie} aufgef\"uhrt ist.

\begin{table}[t!]
\centering
\begin{tabular}{l|l}
K\"orperteil  		& Form und Ma\ss{}e 			\\
\hline \hline
Sch\"adelbasis & Ellipsoid: Radien $ \vec{r} $ = (10\,cm, 15\,cm, 10\,cm) \\ \hline
Augen & Kugel: Radius 1,5\,cm \\ \hline
R\"uckenmark & Zylinder: Radius 3\,cm, H\"ohe 12\,cm \\ \hline
Tumor & Kugel: Radius 2\,cm\\ \hline
Hals & Zylinder: Radius 5,5\,cm \end{tabular} 
\caption[Auflistung der Kopfbestandteile mit Ma\ss{}en und Formen.]{Auflistung der Kopfbestandteile mit Ma\ss{}en und Formen. Der Kopf setzt sich aus den Materialien Haut, Muskel, Knochen, R\"uckenmark, Gehirn, Wasser und letztlich einem modifiziertem Gehirnmaterial, welches den Tumor darstellt, zusammen.}
\label{tab:geometrie}
\end{table}

Der gesamte Kopfbereich stellt eine große Herausforderung an die Genauigkeit der Bestrahlung, da alle Organe in diesem Bereich, vor allem aber die Augen und das R\"uckenmark sehr strahlungsempfindlich sind. Dies ist durch die wichtigen Aufgaben dieser Organe gegeben (Sehen und Weiterleitung der zentralen Nervenimpulse) und die geringe Zellteilung in diesen, denn entstandene Sch\"aden werden nicht oder nur sehr langsam repariert. Es gibt au\ss{}erdem kaum Redundanzen in diesen wichtigen Organen.

%\todo{Hier hatten wir erst genau andersrum argumentiert, sollte aber eigentlich so sein. MT
%
%Ich denke, beim R\"uckenmark liegt das Problem haupts\"achlich an den (adulten) Stammzellen(, die sich zwar langsamer teilen als embryonale, aber vermutlich schneller als normale Zellen!?), aber sich trotzdem weiterentwickeln k\"onnen und daher eine Sch\"adigung starke Auswirkungen hat. HB
%
%Ich schliesse mich Matthias an. Denke das Problem beim Rueckenmark ist, dass allgemein unschoen ist, wenn es beschaedigt wird, wegen der Nervenbahnen die durchlaufen. Wir nicht eine Art der Blutkoerperchen im Rueckenmark gebildet? DN}

\begin{figure}[!h]
\centering
\includegraphics[width=0.75\textwidth]{kopf.pdf}
\caption{Der theoretische Kopf des virtuellen Patienten von der Seite mit den Koordinaten der Bestandteile. Die Koordinaten beziehen sich alle auf den Mittelpunkt der Sch\"adelbasis.}
\label{fig:kopf}
\end{figure}

\begin{figure}[h]
\centering
\includegraphics[width=0.6\textwidth]{kopf_ohne_platte.png}
\caption{Kopf\"aquivalent in \geant{}. Exportiert wurde die Geometrie als GDML Datei und visualisiert mit ROOT.}
\label{fig:kopfGeant4}
\end{figure}

%\newpage

\subsection{Geant4}

\begin{figure}
\includegraphics[width=\textwidth]{Sequenzdiagramm.pdf}
\caption[Sequenzdiagramm des Programmablaufs.]{Sequenzdiagramm des Programmablaufs. Der \textit{runManager} verwaltet alle anderen Prozesse w\"ahrend einer Simulation. Der \textit{visManager} erstellt graphische Ausgaben. Das Schreiben der Logfiles wurde zwecks \"Ubersichtlichkeit weggelassen. Diese Ausgabe folgt nach der graphischen Ausgabe.}
\label{fig:sequenzdiagramm}
\end{figure}

'\textbf{Ge}ometry \textbf{an}d \textbf{T}racking', kurz \geant{}, ist eine am CERN entwickelte Software, welche Teilchen und ihre Interaktion mit Materie simuliert. Die Anwendungsgebiete umfassen Hochenergie-, Nuklear- und Beschleunigerphysik, als auch medizinische Physik und Astrophysik. \cite{Geant10}

Wie der Name des Toolkits schon erahnen l\"asst, besteht ein Programm, welches \geant{} nutzt, aus zwei Hauptbestandteilen. Zum einen ist dies die Definition der Geometrie und zum anderen das Tracking der Teilchen beim Durchlaufen der zuvor definierten Geometrie.

Die Geometrie entspricht dabei dem Aufbau eines oder mehrerer Detektoren (= alles was mit Strahlung wechselwirken kann) mit m\"oglichen Unterabschnitten und der gesamten die Detektoren umschlie\ss{}enden Welt. Das Tracking der Teilchen erfolgt (durch Randbedingungen beschr\"ankt) mit Hilfe verschiedener Monte-Carlo-Methoden. Abbildung \ref{fig:sequenzdiagramm} zeigt die wichtigsten Bestandteile unseres Programms in Form eines Sequenzdiagramms. Diese sind auch generell die Hauptbestandteile einer \geant{}-Simulation. \geant{} ist objektorientiert aufgebaut und alle angegebenen Programmkomponenten sind Objekte. Ihre Aufgaben werden in Tabelle \ref{tab:ObjekteZumSequenzdiagramm} kurz erl\"autert, um ein grobe \"Ubersicht f\"ur \geant{}-Einsteiger zu bieten. Wichtig ist die Unterscheidung zwischen Simulation und Run. Eine Simulation kann mehrere Runs enthalten. Zu Beginn einer Simulation werden alle Objekte initialisiert. Anschlie\ss{}end werden die Runs gestartet. Wir f\"uhren je Simulation nur einen Run durch. F\"ur tiefer gehende Informationen und Hilfe zu \geant{} verweisen wir auf \cite{GeantCo09} and \cite{Ag03}. \par

\begin{table}[htb!]
	\centering
		\begin{tabular}{l|l}
			Objekt & Beschreibung \\ \hline
			runManager & Herzst\"uck jeder \geant{} Simulation; Wird als erstes Objekt \\
			 & in der Main-Methode erstellt und als letztes beendet; alle \\
			 & anderen Objekte werden ihm \"ubergeben. \\ \hline
			DetectorConstruction & beschreibt physikalische Welt: Welche Objekte befinden sich \\
			 & wo und aus welchen Materialien bestehen sie? Abbildung \ref{fig:kopfGeant4}\\
			 &  zeigt den Kopf, wie er in der DetectorConstruction vorliegt. \\ \hline
			PhysicsList & enth\"alt Liste aller auftretenden physikalischen Prozesse; \\
			 & somit besteht M\"oglichkeit, nicht ben\"otigte Prozesse \\
			 & auszulassen; Auslassen von Prozessen spart Rechenzeit \\ \hline
			PrimaryGeneratorAction & beinhaltet den Teilchengenerator; Hier ist definiert, welche \\
			 & Teilchen mit welcher Energie in welche Richtung abgeschossen \\
			 & werden. Optional auch \"uber Benutzereingaben m\"oglich; \\ \hline
			RunAction & definiert was vor, w\"ahrend und nach jedem Run ausgef\"uhrt \\
			 & werden/geschehen soll: z.B. Textausgaben wie ''Run gestartet!''\\
			 &  oder das Schreiben von Ergebnisse in Logfiles \\ \hline
			UISession & erstellt Logdateien f\"ur Simulationsergebnisse, Fehler und \\
			(nicht in Abbildung) & weitere potentiell interessante Informationen; \\ \hline
			UIManager & wartet auf Benutzereingaben und leitet diese weiter; \\
			(nicht in Abbildung) &  \\
		\end{tabular}
	\caption{Kurze Erl\"auterungen der im Sequenzdiagramm (Abb. \ref{fig:sequenzdiagramm}) aufgef\"uhrten Objekte. Zwei nicht abgebildete Objekte sind zus\"atzlich erl\"autert.}
	\label{tab:ObjekteZumSequenzdiagramm}
\end{table}

% Das Herz jeder Geant4 Simulation ist der \textit{runManager} oder auch \textit{G4RunManager} genannt. Der \textit{runManager} bildet den Rahmen jeder Simulation, hat die Referenzen zu den anderen Bestandteilen und verwaltet diese. Er wird als erstes in der Main-Methode jeder Simulation erstellt und als letztes beendet. Als n\"achstes werden eine \textit{DetectorConstruction} und eine \textit{PhysicsList} erstellt, dem \textit{runManager} \"ubergeben und von diesem initialisiert. Die \textit{DetectorConstruction} beschreibt die physikalische Welt, in der die Bestrahlung stattfindet: Welche Objekte befinden sich wo und aus welchen Materialien bestehen sie? Wir haben unsere eigene \textit{DetectorConstruction} mit dem in Abbildung \ref{fig:kopfGeant4} angegebenen Kopf erstellt. Daher steht in dem Sequenzdiagramm \textit{STDetectorConstruction} mit \textit{ST} als Abk\"urzung f\"ur \textit{Strahlentherapie}. In der \textit{PhysicsList} sind alle physikalischen Prozesse aufgef\"uhrt, die in der Simulation auftreten k\"onnen. Somit hat man die M\"oglichkeit Prozesse auszulassen, die in der Simulation keine Rolle spielen sollen. Man spart damit Rechenzeit. Da wir unsere eigene \textit{PhysicsList} erstellt haben, hat sie das Pr\"afix \textit{ST}. Weiterhin wird dem \textit{runManager} jeweils ein neues Objekt des Typs \textit{PrimaryGeneratorAction} und \textit{RunAction} \"ubergeben. Die \textit{PrimaryGeneratorAction} beinhaltet Teilchengenerator. In ihr ist definiert, welche Art von Teilchen mit welcher Energie in welche Richtung abgeschossen werden. Optional kann dies auch \"uber Benutzereingaben erfolgen. In der \textit{RunAction} ist verzeichnet was vor, w\"ahrend und nach einem Run ausgef\"uhrt werden soll. Der \textit{runManager} und alle anderen Bestandteile m\"ussen nur einmal zu beginn initialisiert werden und anschlie\ss{}end k\"onnen beliebig viele Runs durchgef\"uhrt werden. Eine Simulation kann mehrere Runs enthalten. Eine Textausgabe ''Run startet!'', ''Run beendet!'' sowie das Schreiben in eine Ausgabedatei sollte in der \textit{RunAction} untergebracht werden. Ein Run entspricht bei uns einer Simulation. Zwei nicht angegebene Objekte sind die {\ttfamily UISession} und der \textit{UIManager}. In der \textit{UISession} werden verschiedene Logdateien erstellt, in die nach der Simulation bzw. nach dem Run verschiedenes reingeschrieben wird: unter anderem Simulationsergebnisse und Fehler. Der \textit{UIManager} wartet auf Benutzereingaben und leitet diese weiter. Die genannten Programmteile sind alles Objekte. Sie existieren jeweils ein Mal. Sind all diese Objekte initialisiert wird die Simulation gestartet. Parallel zur Simulation k\"onnen die Ergebnisse auf verschiedene Weisen visualisiert werden. Hierf\"ur ist der \textit{visManager} zust\"andig. Am Ende der Simulation werden die Energieabgaben der Photonen und Sekund\"arteilchen in eine Ausgabedatei geschrieben und alle Objekte werden zerst\"ort. 
%\todo{Im Sequenzdiagramm befinden sich einige '.()' ohne Bezug auf irgendwas, ich denke mal, das sind Fehler. Au\sserdem steht ganz unten 'return 0', ist das so richtig? MT
%
%\todo{Die .() sind raus. Aktuelle Visiodatei lade ich noch in den Downloadbereich. Tatsaechlich sind die Klammern nicht wirklich raus, sondern ich habe die Schriftfarbe nur auf weiss gesetzt.
%Bezueglich 'return 0'. Am Ende unseres Programms ist Null der Rueckgabewert. Es ist nicht falsch. Ich habe es als stilistisches Mittel eingebaut um zu zeigen, dass dort Schluss ist. Ein 'ENDE' wuerde es genauso tun. Ich bin dafuer es drin zu lassen. DN}

Die St\"arke von \geant{} liegt dabei nicht zwangsl\"aufig in der Effizienz oder Genauigkeit der Berechnungen, sondern vielmehr in der 'einfachen' Bedienung dieses Toolkits. Es m\"ussen keine grundlegenden physikalischen Prozesse in Algorithmenform gebracht werden, sondern man hat diese bereits zur Verf\"ugung. Sie m\"ussen nur noch in sinnvoller Weise zusammengesetzt werden um komplexe Vorg\"ange bei der Interaktion unterschiedlichster Teilchen mit Materie zu simulieren.

Bei der Benutzung von \geant{} muss zuvor sichergestellt sein, dass die Software \"uberhaupt reproduzierbare, realistische Ergebnisse im Besonderen bei der Berechnung medizinischer Probleme liefert. Hierzu sei der Verweis auf \cite{Ca04} zur Validierung gegeben.

\subsubsection{Meilensteine bei der Erstellung des Simulationsprogramms}
\begin{enumerate}
\item Lauff\"ahiges Programm mit grundlegenden Klassen erstellen, die zur Erzeugung der Detektorgeometrie und Prim\"arteilchen dienen, sowie die Liste der zu betrachtenden physikalischen Prozesse angeben.
\item Modellierung eines Kopfes mit Tumor und Bestrahlung des Kopfes mit monoenergetischen Gammastrahlen (aus einer Richtung) und deren Visualisierung (siehe n\"achster Abschnitt)
\item Ortsaufgel\"ostes Auslesen der deponierten Energie mithilfe von \textit{sensitive detectors}
\item Einteilung des Kopfes in Voxel, um ortsaufgel\"ostes Auslesen der deponierten Energie bzw. Dosis zu vereinfachen
\item Erstellung von Prim\"arteilchen mit spektraler und r\"aumlicher Verteilung mit der \textit{general particle source}
\item Wegen Speicher- und Rechenzeitproblemen Umstieg von \textit{sensitive detectors} auf \textit{multi functional detectors} mit \textit{primitive scorers} (gleiche Funktionalit\"at).
\end{enumerate}

\input{gdml}
\input{physics}
\input{medics}
